package 多线程.多线程创建方式一;

// 方法一: 继承Thread类
// 1. 定义一个子类MYyThread继承线程java.lang.Thread, 重写run()方法
// 2. 创建MyThread类的对象
// 3. 调用线程对象的start()方法启动线程(启动后还是执行run方法的)

// 方式一的优缺点
// 优点: 编码简单
// 缺点: 线程类已经继承Thread, 无法继承其他类, 不利于功能的扩展(java是不支持多继承,所以只能认一个爸爸)

// 注意事项
// 1. 启动线程必须是调用start方法, 不是调用run方法(如果调用run方法, 那么java会直接调用run方法当作主线程的一部分, 就只有一个主线程)
// 2. 不要把主线程任务放在子线程之前 (如果把主线程的任务放在子线程之前, 那么就会先执行完主线程后再去执行子线程, 就不会一起执行)

public class Test {
    // main方法是由一条默认的主线程负责执行
    public static void main(String[] args) {
        // 线程的创建方式一: 继承Thread类
        // 3. 创建MyThread线程类的对象代表一个线程
        Thread t = new MyThread();
        // 4. 启动线程(自动执行run方法)
        t.start(); // 这时候有两个线程 main方法和t线程
        for (int i = 0; i < 5; i++) {
            System.out.println("main主线程输出" + i);
        }
    }
}
